<?php

class Application_Model_DbTable_Usuarios extends Zend_Db_Table_Abstract
{
    protected $_name = 'usuarios';
    
    //obtener una lista de articulos
    //$this->findDependentRowset('Application_Model_DbTable_Articulos');
    protected $_dependentTables = array(
        'Application_Model_DbTable_Articulos',
        'Application_Model_DbTable_Comentarios'
        );
    
    public function obtenerTodo() {
        //hago que solo devuelva la columna nombre_real
        $select = $this->select();
        $select->from($this, array('id','nombre_real','foto'));
        return $this->fetchAll($select);
    }
    
    public function existe_usuario ($usuario) {
        $select = $this->select();
        $select->where('usuario = ?', $usuario);
        $row = $this->fetchRow($select);
        if ($row){
            return true;
        } else {
            return false;
        }
    }    
    
    public function crearUsuario ($usuario,$nombre,$clave) {
        $this->insert(array("usuario" => $usuario, "nombre_real" => $nombre, "clave" => sha1($clave), "fecha_reg" => date("Y-m-d H:i:s")));
        $upload = Zend_Registry::get('upload_paths');
        $pathname = $upload->paths->upload->images->usuarios . "/" . $usuario;
        mkdir($pathname);
    }


    public function obtenerUsuario ($id) {
        $select = $this->select();
        $select->where('id = ?', $id);
        return $this->fetchRow($select);  
    }
    
    public function borrarUsuario ($id) {
        $usuario = $this->obtenerUsuario($id);
        $upload = Zend_Registry::get('upload_paths');
        $pathname = $upload->paths->upload->images->usuarios . "/" . $usuario->usuario;
        $handle = opendir($pathname);
        while ($f = readdir($handle))  {   
            if ($f=='.' || $f=='..') 
                continue; 
            else 
                unlink($pathname . "/" . $f); 
        }
        closedir($handle);
        rmdir($pathname);
        $this->delete(array('id = ?' => $id));
    }
    
    public function actualizarUsuario ($id,$opciones) {
        $usuario = $this->obtenerUsuario($id);
        $pathname = $opciones['path'];
        $newFile = $opciones['foto'];
        if ($newFile) {
            $handle = opendir($pathname);
            while ($f = readdir($handle))  {   
                if ($f=='.' || $f=='..' || $f==$newFile) 
                    continue; 
                else 
                    unlink($pathname . "/" . $f); 
            }
            closedir($handle);
            $path_bd = '/media/usuarios/' . $usuario->usuario . '/' . $opciones['foto'];
        } else {
            $path_bd = $usuario->foto;
        }
        $data = array(
            'nombre_real' => $opciones['nombre'],
            'foto' => $path_bd,
            'pais' => $opciones['pais'],
            'departamento' => $opciones['depto'],
            'ciudad' => $opciones['ciudad'],
            'direccion' => $opciones['dir'],
            'telefono' => $opciones['tel'],
            'correo_electronico' => $opciones['email'],
        );
        $this->update($data, array('id = ?' => $id));
    }
    
    public function actualizarClaveUsuario ($id,$clave) {
        $data = array(
            'clave' => sha1($clave),
        );
        $this->update($data, array('id = ?' => $id));
    }
    
    public function actualizarRoleUsuario ($id,$role) {
        $data = array(
            'role' => $role,
        );
        $this->update($data, array('id = ?' => $id));
    }
    
    public function existe_mail ($email) {
        $select = $this->select();
        $select->where('correo_electronico = ?', $email);
        $row = $this->fetchRow($select);
        if ($row){
            return true;
        } else {
            return false;
        }
    }  
    
    public function obtenerUsuarioEmail ($email) {
        $select = $this->select();
        $select->where('correo_electronico = ?', $email);
        return $this->fetchRow($select);  
    }
    
}

